www.gusucode.com > matlab编程NSCT分解 图像融合 各个融合指标评价体系 分解源码程序 > matlab编程NSCT分解 图像融合 各个融合指标评价体系 分解源码程序/NSCT/modIHS.m
function [F]=modIHS(M,P) lamda = 10^-9; eps = 10^-10; M=double(M); P=double(P); %norm all bands be in range 0 to 1. for i=1:size(M,3) bandCoeffs(i)=max(max(M(:,:,i))); M(:,:,i)=M(:,:,i)/bandCoeffs(i); end %norm pan to be in range 0 to 1 panCoeff=max(max(P)); P=P/panCoeff; alpha=findalph(M,P); [n,m,s]=size(M); E1 = expEdge(P,lamda,eps); E=phasecongmono(P); %I=(alpha(1)*M(:,:,1)+alpha(2)*M(:,:,2)+alpha(3)*M(:,:,3)+alpha(4)*M(:,:,4)); I=(alpha(1)*M(:,:,1)+alpha(2)*M(:,:,2)+alpha(3)*M(:,:,3)); P=(P-mean(P(:)))*std(I(:))/std(P(:)) + mean(I(:)); for i=1:s F(:,:,i)=M(:,:,i)+E.*(P-I); end %restore data to original data range for i=1:size(F, 3) F(:,:,i)=F(:,:,i)*bandCoeffs(i); end %m= min(min(min(F))); %if m<0 % F=F-m; %end %F=F/max(max(max(F)));